package model

import (
	"gorm.io/gorm"
	"log"
	"smart-health-platforms/config"
	"time"
)

type GrouponProduct struct {
	Id            uint           `gorm:"column:id;type:int UNSIGNED;primaryKey;not null;" json:"id"`
	ProductName   string         `gorm:"column:product_name;type:varchar(255);comment:商品名称;not null;" json:"product_name"`                           // 商品名称
	ProductPrice  float64        `gorm:"column:product_price;type:decimal(10, 2) UNSIGNED;comment:商品原价;not null;default:0.00;" json:"product_price"` // 商品原价
	ProductStock  uint           `gorm:"column:product_stock;type:int UNSIGNED;comment:商品库存;not null;default:0;" json:"product_stock"`               // 商品库存
	GroupPrice    float64        `gorm:"column:group_price;type:decimal(10, 2) UNSIGNED;comment:拼团价;not null;default:0.00;" json:"group_price"`      // 拼团价
	MemberNum     uint           `gorm:"column:member_num;type:int UNSIGNED;comment:成团人数;not null;default:0;" json:"member_num"`                     // 成团人数
	Status        uint           `gorm:"column:status;type:int UNSIGNED;comment:状态：0：未开始 1：进行中 2：已结束;not null;default:0;" json:"status"`             // 状态：0：未开始 1：进行中 2：已结束
	ActivityStart time.Time      `gorm:"column:activity_start;type:datetime(3);comment:活动开始时间;not null;" json:"activity_start"`                      // 活动开始时间
	ActivityEnd   time.Time      `gorm:"column:activity_end;type:datetime(3);comment:活动结束时间;not null;" json:"activity_end"`                          // 活动结束时间
	CoverImage    string         `gorm:"column:cover_image;type:varchar(255);comment:封面图;not null;" json:"cover_image"`                              // 封面图
	CreatedAt     time.Time      `gorm:"column:created_at;type:datetime(3);not null;default:CURRENT_TIMESTAMP(3);" json:"created_at"`
	UpdatedAt     time.Time      `gorm:"column:updated_at;type:datetime(3);not null;default:CURRENT_TIMESTAMP(3);" json:"updated_at"`
	DeletedAt     gorm.DeletedAt `gorm:"column:deleted_at;type:datetime(3);default:NULL;" json:"deleted_at"`
}

func (gp *GrouponProduct) TableName() string {
	return "groupon_product"
}

// 通过id查找拼团商品
func (gp *GrouponProduct) GetGrouponProductById(id int) error {
	return config.DB.Where("id = ?", id).Limit(1).Find(&gp).Error
}

// 拼团商品发布
func (gp *GrouponProduct) CreateGrouponProduct() error {
	if config.DB == nil {
		log.Fatal("DB未初始化")
	}
	return config.DB.Create(&gp).Error

}

// 拼团商品列表展示
func (gp *GrouponProduct) GetGrouponProductList(productName string) (grouponProductList []*GrouponProduct, err error) {
	err = config.DB.Model(&gp).Where("product_name like ?", "%"+productName+"%").
		Find(&grouponProductList).Error
	return
}

// 修改拼团商品信息
func (gp *GrouponProduct) UpdateGrouponProduct(id int) error {
	return config.DB.Where("id = ?", id).Updates(&gp).Error
}

// 删除拼团商品信息
func (gp *GrouponProduct) DeleteGrouponProduct(id int) error {
	return config.DB.Where("id = ?", id).Delete(&gp).Error
}

// 获取拼团商品详情
func (gp *GrouponProduct) GetGrouponProductDetail(id int) error {
	return config.DB.Where("id = ?", id).Find(&gp).Error
}
